#include <stdio.h>
#include "assert.h"

#include "chemin.h"
#include "ennemi.h"
#include "terrain.h"


void initNumCheminTab(chemin** tab, const int x, const int y)
{
    int i,j;
    for(i=0; i<x; i++)
    {
        for(j=0; j<y; j++)
        {
            tab[i][j].num = 1000;
            tab[i][j].deplacement = 'n';
        }
    }

}

/* tab1: terrain, tab2: tab contenant parcours plus court et deplacements, x et y: position vilain,
n=0 par default, c='x' par default */
void remplirNumCheminTab(char** tab1, chemin** tab2,
                         const int x, const int y, const int n, const char c, const int strategie)
{
    assert(x>=0);
    assert(x<16);
    assert(y>=0);
    assert(y<16);
    assert(n>=0);

    if(tab1[x][y]!='#' && tab1[x][y] !='C' && n <= tab2[x][y].num && strategie == 0)
    {
            tab2[x][y].num = n;
            tab2[x][y].deplacement = c;
            remplirNumCheminTab(tab1, tab2, x-1, y, n+1, 'H', 0);
            remplirNumCheminTab(tab1, tab2, x+1, y, n+1, 'B', 0);
            remplirNumCheminTab(tab1, tab2, x, y-1, n+1, 'G', 0);
            remplirNumCheminTab(tab1, tab2, x, y+1, n+1, 'D', 0);
    }

    else if(tab1[x][y]!='#' && n <= tab2[x][y].num && strategie == 1)
    {
            tab2[x][y].num = n;
            tab2[x][y].deplacement = c;
            remplirNumCheminTab(tab1, tab2, x-1, y, n+1, 'H', 1);
            remplirNumCheminTab(tab1, tab2, x+1, y, n+1, 'B', 1);
            remplirNumCheminTab(tab1, tab2, x, y-1, n+1, 'G', 1);
            remplirNumCheminTab(tab1, tab2, x, y+1, n+1, 'D', 1);
    }
}

int valeurAbs (const int x) /* renvoie la valeur absolue de x */
{
    if (x < 0) return -x;
    else return x;
}
